/**
 * 给定二维数组，相连的且具有相同颜色值的会被同时改变
 * @param {number[][]} image 
 * @param {number} sr 渲染起始点横坐标
 * @param {number} sc 渲染起始点纵坐标
 * @param {number} newColor 
 */
var floodFill = function (image, sr, sc, newColor) {
    // 相同颜色不改变
    if (image[sr][sc] === newColor) {
        return image
    }
    const oldColor = image[sr][sc]
    dfs(sr, sc)

    function dfs(sr, sc) {
        // 越界处理
        if (sr < 0 || sr >= image.length || sc < 0 || sc >= image[0].length || image[sr][sc] !== oldColor) {
            return
        }
        image[sr][sc] = newColor
        dfs(sr - 1, sc)
        dfs(sr + 1, sc)
        dfs(sr, sc - 1)
        dfs(sr, sc + 1)
    }
    
    return image
}